1. Field of the Invention
The present invention relates to systems and methods for providing video program material to subscribers, and in particular to a method and system for providing near video on demand services.
2. Description of the Related Art
In recent years, there has been increasing interest in providing video-on-demand (VOD) services to cable and satellite television subscribers. With an idealized VOD system, the user simply selects the desired program material (video or audio), transmits the selection to the video provider, and the video program is transmitted to the user in a real time data stream. With such idealized systems, the user can control the display of the video program in real time by issuing stop, rewind, fast-forward, or pause commands. These commands are received by the video server, and the data stream is interrupted or modified as appropriate for the command from the viewer. Essentially, this VOD paradigm implements a client-server architecture wherein the user""s set top box (or computer) is the client, and the video server is the server.
While the foregoing VOD system would provide the user with beneficial and flexible service, it suffers from several major disadvantages. First, it places tremendous difficulties on the input/output (I/O) multiplexing and bandwidth capabilities of the video server. While the real-time transmission of a single video program to a single video subscriber is relatively easy to accomplish, this is not the case when a wide variety of different video sources may be requested by a large number of video subscribers all at the same time. Essentially, because subscriber requests are generally asynchronous, each request for a particular video program requires a separate transmission, and each separate transmission consumes a portion of the available bandwidth.
Second, the foregoing systems are intolerant of communication latencies between the user and the video server. Particularly when fast-forwarding and rewinding through video sequences to look for segments of interest, users may issue a number of commands in rapid succession, expecting near instantaneous responses from the video server. Even minor communication latencies can become an extreme irritation to the user.
Many different solutions to these problems have been proposed, but for the most part, these solutions have had limited success. For the most part, these solutions are unnecessarily complicated and expensive because they focus on streamlining the data transmission process with the use of higher capability equipment, or a plurality of remotely located video servers.
What is needed is a method for supplying video on demand to a large number of subscribers, each of which may request a different program and at times asynchronous to one another. The present invention satisfies that need.
In summary, the present invention describes a system and method in which an integrated receiver/decoder (IRD) or similar device is used to select and store programs to support video on demand. In one embodiment, programs are selected by use of a broadcaster-controlled attribute, such as a flag in a program guide. In another embodiment, this is accomplished by a customer setup profile (e.g. programs with DOLBY digital or programs of a specific genre). The IRD scans the program guide to identify VOD candidates, and based on the start times in the program guides and transport streams, the schedules the pre-recording of segments of the identified programs.
The scheduled pre-recording of segments of the identified programs can occur at a rate that is faster than real time. To accomplish this, the IRD scans the program guide and learns the start time for each of the NVOD candidates. When multiple staggered program start times are found, the IRD determines which portions of the program can be received and stored in parallel in order to pre-record all relevant program segments in the shortest time. IRDs with single tuners acquire staggered start times that are on the same transport stream, while multi-tuner IRDs can collect data from many transport streams. After the storage process is complete, the customer is informed (for example, by the program guide), that the video program is available for VOD playback.
Once the user demands VOD playback, the pre-stored video segment is played back to the user, while the remaining subsequent segments of the video program are received and recorded in parallel. These subsequent segments are spliced to the pre-stored segment and to each other to give the appearance of VOD playback. In one embodiment, the IRD acquires and stores a purchase information packet (PIP) for each program segment. Further, where program is stored as multiple segments, MPEG data embedded in the SMPTE time code or the presentation time stamp information allows the IRD to perform MPEG on line editing to reassemble the program into a single filestream. The timecode information also allows the IRD to acquire and store a video program without interruption. The SMPTE timecode also allows the IRD to store a video program with user interruptions. When the IRD is in the process of storing video information to a disk and the customer uses the IRD to view a different program, the IRD can later resume acquisition using a later rebroadcast of the same program to resume the storage at the point before it was interrupted by the user.
In one embodiment, the time-staggered versions of selected (e.g. PPV) video programs are transmitted on channels that are broadcast on a common transponder. This allows a single-tuner IRD to acquire and store several program segments in parallel, resulting in faster than real time storage of the subsequent segments of video program while the customer is viewing the pre-stored program segment. So configured, the IRD can receive and store a video program 2-5 times faster than real time. This allows the user to fast-forward anywhere in the program within a single rebroadcast interval.
Decryption of the pre-stored program segments and the subsequent program segments is also be performed by the IRD. Since program segments are pre-stored by the IRD in anticipation of customer demand and the storage of the pre-stored segments may be autonomously performed by the IRD, the broadcaster may not be aware of which program segments were stored by each customer""s IRD. In one embodiment, the IRD solves this problem by storing conditional access information such as a purchase information parcel (PIP) with each stored program segment. When the user makes a VOD demand, a message is sent from the IRD identifying each of the subsequent segments of the video program. In response, the IRD receives the PIPs corresponding to the subsequent program segments, and decodes, and splices them together as required. To prevent the customer from being billed for multiple viewing of the same program, a modified billing system recognizes that the program segments sent to the customer""s IRD were part of a VOD program, and would bill the customer for a single viewing of all of the video segments. In one embodiment, separate PIPs for VOD service are defined, each of which having a value which is an appropriate (e.g. pro-rated according to the time length of the segment) fraction of the total charge for the complete program defined. In another embodiment, the billing system recognizes the PIPs as associated with program segments which were broadcast simultaneously, and adjusts the bill for a single viewing accordingly.
One embodiment of the present invention is described as a method comprising the steps of selecting at least one of a plurality of video programs for VOD service; receiving and storing a first segment of the selected video program in a local storage device before accepting a user demand to view the selected video program, wherein the temporal length of the first segment is at least substantially equivalent to a retransmission interval; and, after accepting the user demand to view the selected video program, retrieving the stored first segment for presentation while receiving and storing subsequent segments of the video program from each of the plurality of channels transmitting a portion of the selected video program in parallel.
One embodiment of the present invention is described by a method of storing or viewing a video program in response to a user demand, wherein the video program is repeatedly transmitted on one of a plurality of channels, each repeated transmission separated in time from a preceding transmission of the video program by a retransmission interval and being transmitted on a different channel than the previous transmission. The method comprises the steps of selecting at least one of a plurality of video programs, and receiving a plurality of time segments of the selected video program in parallel, wherein each of the time segments is received on a different one of the channels.
Another embodiment of the present invention is described by an apparatus comprising an input device for accepting a selection of at least one of a plurality of video programs for VOD service; a tuner for receiving multiple segments of the selected video program in parallel, wherein each segment is received on one of a plurality of channels; and a storage device, for pre-storing a first segment of the selected video program and for storing subsequent segments of the selected video program in parallel while retrieving the pre-stored first segment of the selected video program.